home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Software Contest 3
/
FM Towns Software Contest 3.iso
/
exp
/
astral
/
a1
/
game
/
source
/
scmds.asm
< prev
next >
Wrap
Assembly Source File
|
1994-01-07
|
4KB
|
179 lines
.386p
public SPR_set_att,SPR_set_pos,SPR_set_att_pos
data segment dword 'DATA'
data ends
code segment dword 'CODE'
assume cs:code,ds:data
;------------------------------------------------------------------------------
; スプライトのアトリビュートの設定
; SPR_set_att(int num,int x,int y,int attr,int col)
; for Screen10
; EAX EBX ECX EDX ESI EDI
; 色・アトリ 未使用 X・Yカウンタ 転送先アドレス 未使用 未使用
;------------------------------------------------------------------------------
align 4
SPR_set_att proc
push es
push ebp
mov ebp,esp
mov ax,130h ;スプライトのセレクタをセット
mov es,ax
mov edx,ss:[ebp]+8+4 ;スプライト番号をセット
shl edx,3
add edx,4
mov cl,byte ptr ss:[ebp]+8+8 ;Xカウンタをセット
mov ch,byte ptr ss:[ebp]+8+12 ;Yカウンタをセット
mov eax,ss:[ebp]+8+20 ;色テーブルをセット
shl eax,16
mov ax,word ptr ss:[ebp]+8+16 ;アトリビュートをセット
align 4
spr_set_att_start:
mov es:[edx],eax ;アトリビュート&色の転送
inc eax
add edx,8
dec cl ;Xリピート
jnz spr_set_att_start
mov cl,byte ptr ss:[ebp]+8+8 ;Yリピート
dec ch
jnz spr_set_att_start
pop ebp
pop es
ret
SPR_set_att endp
;------------------------------------------------------------------------------
; スプライトのポジションの設定
; SPR_set_pos(int num,int x,int y,int xdot,int ydot)
; for Screen10
; EAX EBX ECX EDX ESI EDI
; X・Y座標 未使用 X・Yカウンタ 転送先アドレス 未使用 未使用
;------------------------------------------------------------------------------
align 4
SPR_set_pos proc
push es
push ebp
mov ebp,esp
mov ax,130h ;スプライトのセレクタをセット
mov es,ax
mov edx,ss:[ebp]+8+4 ;スプライト番号をセット
shl edx,3
mov cl,byte ptr ss:[ebp]+8+8 ;Xカウンタをセット
mov ch,byte ptr ss:[ebp]+8+12 ;Yカウンタをセット
mov eax,ss:[ebp]+8+20 ;X座標をセット
shl eax,16
mov ax,word ptr ss:[ebp]+8+16 ;Y座標をセット
align 4
spr_set_pos_start:
mov es:[edx],eax ;アトリビュート&色の転送
add edx,8
add eax,16
dec cl ;Xリピート
jnz spr_set_pos_start
mov cl,byte ptr ss:[ebp]+8+8 ;Yリピート
mov ax,word ptr ss:[ebp]+8+16
add eax,100000h
dec ch
jnz spr_set_pos_start
pop ebp
pop es
ret
SPR_set_pos endp
;------------------------------------------------------------------------------
; スプライトのアトリビュート&ポジションの設定
; SPR_set_att_pos(int num,int x,int y,int attr,int col,int xdot,int ydot)
; for Screen10
; EAX EBX ECX EDX ESI EDI
; 色・アトリ 未使用 X・Yカウンタ X・Y座標 未使用 転送先アドレス
;------------------------------------------------------------------------------
align 4
SPR_set_att_pos proc
push es
push edi
push ebp
mov ebp,esp
mov ax,130h ;スプライトのセレクタをセット
mov es,ax
mov edi,ss:[ebp]+12+4 ;スプライト番号をセット
shl edi,3
mov ecx,ss:[ebp]+12+8 ;Xカウンタをセット
mov ch,byte ptr ss:[ebp]+12+12 ;Yカウンタをセット
mov edx,ss:[ebp]+12+28 ;Y座標をセット
shl edx,16
mov dx,word ptr ss:[ebp]+12+24 ;X座標をセット
mov eax,ss:[ebp]+12+20 ;色テーブルをセット
shl eax,16
mov ax,word ptr ss:[ebp]+12+16 ;アトリビュートをセット
align 4
spr_set_start:
mov es:[edi],edx ;X&Y座標の転送
add edx,16
add edi,4
mov es:[edi],eax ;アトリビュート&色の転送
inc eax
add edi,4
dec cl ;Xリピート
jnz spr_set_start
mov cl,byte ptr ss:[ebp]+12+8 ;Yリピート
mov dx,word ptr ss:[ebp]+12+24
add edx,100000h
dec ch
jnz spr_set_start
pop ebp
pop edi
pop es
ret
SPR_set_att_pos endp
code ends
end